#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
小红书数据管理系统Web应用
基于Flask实现的前后端服务，使用SQLite数据库管理小红书数据
"""

from flask import Flask, render_template, request, jsonify, redirect, url_for, flash
import json
import datetime
import os
import webbrowser
import threading
import time
from datetime import timedelta
from api.xiaohongshu import xhs_bp
from api.database_api import db_api
from api.crawler import crawler_bp

def create_app():
    app = Flask(__name__)
    app.secret_key = os.environ.get('SECRET_KEY', 'dev_key_for_xhs_system')
    
    # 设置会话配置
    app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)  # 会话有效期7天
    app.config['SESSION_TYPE'] = 'filesystem'  # 文件系统存储会话
    app.config['SESSION_USE_SIGNER'] = True  # 签名cookie
    
    # 注册蓝图
    app.register_blueprint(xhs_bp, url_prefix='/')  # 注册小红书数据管理蓝图到根路径
    app.register_blueprint(db_api)  # 注册数据库API蓝图，使用其自定义前缀
    app.register_blueprint(crawler_bp)  # 注册爬虫蓝图
    
    # 错误处理
    @app.errorhandler(404)
    def page_not_found(error):
        return render_template('errors/404.html'), 404
    
    @app.errorhandler(500)
    def internal_server_error(error):
        return render_template('errors/500.html'), 500
    
    # 主页重定向到小红书数据管理页面
    @app.route('/')
    def index():
        return redirect(url_for('xhs.index'))

    return app

def open_browser():
    """在单独的线程中打开浏览器，避免阻塞主线程"""
    # 等待服务器启动
    time.sleep(1.5)
    # 打开默认浏览器访问应用
    webbrowser.open('http://localhost:5000/')

if __name__ == '__main__':
    app = create_app()
    
    # 启动浏览器线程
    threading.Thread(target=open_browser).start()
    
    # 启动Flask应用
    print("正在启动小红书数据管理系统...")
    app.run(debug=True, host='0.0.0.0', port=5000) 